<?php namespace Admin\Controller; 


//分类管理控制器
class CateController extends CommonController{
	private $model;	
	
	public function __auto(){
		$this->model = new \Common\Model\Cate;
	}
	
	//默认显示-分类列表
	public function index(){
		//分页展示使用
		$page = Page::row(10)->make(Db::table('category')->count());
		//将分页数据分配到页面
		View::with('page',$page);
		
	    //首先判断,如果库里没有分类,则跳转到添加分类页面
	    	//获得升序排列的csort数据
		$data = $this->model->orderBy('csort','ASC')->limit(Page::limit())->get();
		
		//如果没有分类数据,弹窗提示跳转
		if(!$data){
			View::success('还没有分类',U('add'));
		}
		
		//如果有数据,将数据按照Data::tree (框架自带函数方法,传3个参数) 变为树状结构
		$data = Data::tree($data,'cname','cid','pid');
		View::with('data',$data);
		View::make();
	}//index
		
		
	//顶级分类  添加
	public function add(){
		//判断页面如果有post提交
		if(IS_POST){
			if($this->model->store()){
				View::success('添加成功',U('index'));
			}
			//提示错误
			View::error($this->model->getError());
		}
		//显示模板
		View::make();
	}//addCate
	
	
	//操作:添加子类
	public function addSon(){
		//如果有POST提交
		if(IS_POST){
			//判断如果表单数据自动验证为true,返回信息添加成功
			if($this->model->store()){
				View::success("添加成功",U('index'));
			}//$this->model->store()
			//错误提示信息
			View::error($this->model->getError());
		}//IS_POST
		
		//获得GET传参cid数据信息 (intval转为整型)
		$cid = Q('get.cid',0,'intval');
		//查找主键为$cid的数据
		$cate = $this->model->where("cid={$cid}")->find();
		//分配变量
		View::with('cate',$cate);
		
	    View::make();
	}//addChildClass
	
	
	//操作:删除分类
	public function del(){
		//获得GET参数cid,   (intval:转换为整型)
		$cid = Q('get.cid',0,'intval');
		//一,首先,判断该分类下是否存在文章,存在的话提示条信息
			//1.实例化文章(article)这个表的类Arc
		$arcModel = new \Common\Model\Arc;
			//2.获得参数与category表里相同cid的数据内容
		$arcData = $arcModel->where("category_cid={$cid}")->find();
			//3.判断如果有这条数据,给条提示信息
		if($arcData){
			View::error('此分类下有文章,请先删除再进行操作');
		}
		
		//二,删除父类后子分类上移
			//1.使用pluck直接获取pid值
		$pid = $this->model->where("cid={$cid}")->pluck('pid');
			//找到当前分类的所有的自己把pid改成被删除分类的pid
		$this->model->where("pid={$cid}")->update(array('pid'=>$pid));
			//执行删除,将数据从库里删除
		$this->model->where("cid={$cid}")->delete();
		View::success('删除成功!');
	}//del
	
	
	//操作:编辑分类
	public function edit(){
		//获得POST数据,修改数据	调用edit()方法时需要在提交页面添加一个隐藏表单,POST提交时传递id参数***************
		if(IS_POST){
			if($this->model->edit()){
				View::success("修改成功",U('index'));
			}
			View::error($this->model->getError);
		}
		
		//1,获取到原旧数据
		$cid = Q('get.cid',0,'intval');
		//查询相匹配的数据库数据
		$oldData = $this->model->where("cid={$cid}")->find();
		//分配变量,然表单里默认显示旧数据
		View::with('oldData',$oldData);
		
		//2.处理'所属分类'(除了自己和自己的子集)
			//树状显示model类里getNoMy除了自己和自己子集,所有分类的名称cname	*(心得:Data::tree里需要传4个参数<数组,需要树状显示的字段名,主键id,父id>)树状显示将存放到数据数组里的_name供调用;*
		$cateData = Data::tree($this->model->getNoMy($cid),'cname','cid','pid')	;
		$cteData = Data::tree($this->model->getNoMy($cid),'cid','cid','pid');
		/*p($cateData);
		echo "<hr/>";
		p($cteData);*/
		
		//3.分配变量到页面
		View::with("cateData",$cateData);
		View::make();
	}//edit
	
}//class
